import BaseController from "../../base.js";
/**
 * 出租房相关门户接口
 * 
 */
export default class extends BaseController {
    /**
    * 首页出租房推荐 
    * 获取出租房列表的分页数据
    *
    * @param {int} pageSize 分页大小，默认4
    * @param {int} page 请求页码，默认1
    *
    * @returns {Promise} 包含满足条件的新闻列表的Promise对象
    * @example
    *
    * const rentalSelectListInfo = await request.post("/api/portal/rental/selectList",
    * {params: {pageSize:10, page:1}});
    * 返回列表每一个对象包含以下属性：
    * [{
    *   id,
    *   domain '区',
    *   img '图片地址',
    *   community '小区名',
    *   area '面积',
    *   layout '户型',
    *   sale '价格',
    * },]
    */
   async selectListAction(){
        // 定义变量保存前端传过来的参数
        let pageSize = this.post("pageSize") || 4;
        let page = this.post("page") || 1;
        // 定义查找字段
        let field = "id,domain,img,community,area,layout,price";
        //定义变量保存查找后的数据库数据
        let rows = await this.model("rental")
            .field(field)
            .page(page, pageSize)
            .countSelect();
        
        //判断数据库查询是否成功
        if(!think.isEmpty(rows)){
            return this.success(rows);
        }else{
            return this.fail(1000,'数据错误');
        }
        
   }

    /**
     * 门户搜索页
     * 获取出租房列表
     * @param {string} domain 区，默认为空
     * @param {string} price 价格，默认空
     * @param {string} layout 户型，默认为空
     * @param {string} area 面积,默认为空
     * 
     * 
     * @returns {Promise} 包含满足条件的出租房列表的Promise对象
     * @example
     *
     * const rentalListInfo = await request.post("/api/portal/rental/list", 
     * {params: {domain : "海珠" , price : "800,1000" , layout : "两室一厅" , area : "30.8"}});
     * 返回对象包含以下属性：
     * [{
    *   id,
    *   domain '区',
    *   subway '地铁',
    *   address '详细地址',
    *   img '图片地址',
    *   community '小区名',
    *   area '面积',
    *   public_area '公摊面积',
    *   layout '户型',
    *   direction '朝向',
    *   price '价格',
    *   householder '托管人',
    *   announce_time '发布时间'
     * },]
    */
    async listAction(){
        //定义变量保存查询条件
        let map = {};

        //处理字符串转化为where条件
        if(!think.isEmpty(this.post("domain"))){
            map['domain'] = ["=" , this.post("domain")];
        }
        if(!think.isEmpty(this.post("price"))){
            map['price'] = ["between" , this.post("price")];
        }
        if(!think.isEmpty(this.post("layout"))){
            map['layout'] = ["=" , this.post("layout")];
        }
        if(!think.isEmpty(this.post("area"))){
            map['area'] = ["between" , this.post("area")];
        }

        //field需查找字段
        //let field = "`abstract`, `city`, `city_label`, `county`, `county_label`, `cover`";
        let rows = await this.model("rental")
            // .field(field)
            .where(map)
            .select();

        //判断数据库查询是否成功
        if(!think.isEmpty(rows)){
            return this.success(rows);
        }else{
            return this.fail(1000,'无此类房子');
        }
   }


   /**
     * 门户详情页
     * 获取出租房详细信息
     *
     * @param {int} id 出租房id
     * 
     * @returns {Promise} 包含满足条件的新闻列表的Promise对象
     * @example
     *
     * const rentalDetailInfo = await request.post("/api/portal/rental/detail", 
     * {params: {id : 1}});
     * 返回对象包含以下属性：
     * {
    *   id,
    *   domain '区',
    *   subway '地铁',
    *   address '详细地址',
    *   img '图片地址',
    *   community '小区名',
    *   area '面积',
    *   public_area '公摊面积',
    *   layout '户型',
    *   direction '朝向',
    *   price '价格',
    *   sale_time '开盘时间',
    *   householder '托管人',
    *   announce_time '发布时间'
    *   tel '托管人电话'
     * }
    */

    async detailAction(){
        //定义变量保存前端传过来的参数
        if(!think.isEmpty(this.post("id"))){
            var id = this.post("id");
        }else{
            return this.fail(1000,"传参错误");
        }

        //定义变量保存数据库查找后的数据
        let rows = await this.model("rental")
            .field()
            .where({ id: id })
            .find();

        //判断数据库查询是否成功
        if(!think.isEmpty(rows)){
            let data = await this.model("manager")
            .field("name,contact_information")
            .where({id : rows['householder']})
            .find();

            // 判断数据库查询是否成功
            if(!think.isEmpty(data)){
                rows['holderName'] = data["name"];
                rows['holderTel'] = data['contact_information'];
                return this.success(rows);
            }
            else{
                return this.fail(1000,'数据错误');
            }

        }else{
            return this.fail(1000,'数据错误');
        }
    }
}